package LeetCode;

public class TestNum203 {
    /**
     * 给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
     * Num203号问题
     * 移除链表元素
     * @param val
     */
    //递归方法
    public ListNode removeElements(ListNode head,int val){
        if(head==null){
            return null;
        }
        head.next=removeElements(head.next,val);
        if (head.val==val){
            return head.next;
        }
        return head;
        /**
         * 遍历链表方法
         */
//        while((head!=null)&&(head.val==val)){
//            ListNode temp = head;
//            head=head.next;
//            temp.next=null;
//        }
//        if(head==null){
//            return null;
//        }else{
//            ListNode prev = head;
//            while(prev.next!=null){
//                if(prev.next.val==val){
//                    ListNode cur=prev.next;
//                    prev.next=cur.next;
//                    cur.next=null;
//                }else{
//                    prev = prev.next;
//                }
//            }
//        }
//        return head;
        //虚拟头节点方法
//        ListNode dummyHead = new ListNode(-101);
//        dummyHead.next=head;
//        ListNode prev = dummyHead;
//        while (prev.next!=null){
//            if (prev.next.val==val){
//                prev.next=prev.next.next;
//            }else {
//                prev=prev.next;
//            }
//        }
//        return dummyHead.next;
    }
}
